package com.mappro.supportedclass;

import android.graphics.Bitmap; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.Point; 
import android.graphics.RectF; 
import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapView; 
import com.google.android.maps.Overlay; 
import com.google.android.maps.Projection; 

public class DrawingOverlayPath extends Overlay{
	private GeoPoint gp1; 
	private GeoPoint gp2; 
	private int mRadius=6; 
	private int mode=0; 
	private int defaultColor; 
	private String text=""; 
	private Bitmap img = null; 

	public DrawingOverlayPath(GeoPoint gp1,GeoPoint gp2,int mode) // GeoPoint is a int. (6E) 
	{ 
		this.gp1 = gp1; 
		this.gp2 = gp2; 
		this.mode = mode; 
		defaultColor = 999; // no defaultColor 
	} 

	public DrawingOverlayPath(GeoPoint gp1,GeoPoint gp2,int mode, int defaultColor) 
	{ 	
		this.gp1 = gp1; 
		this.gp2 = gp2; 
		this.mode = mode; 
		this.defaultColor = defaultColor; 
	}	 
	public void setText(String t) 
	{ 
		this.text = t; 
	} 
	public void setBitmap(Bitmap bitmap) 
	{ 
		this.img = bitmap; 
	} 
	public int getMode() 
	{ 
		return mode; 
	} 

	@Override 
	public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) 
	{ 
		Projection projection = mapView.getProjection(); 
		if (shadow == false) 
		{ 
			Paint paint = new Paint(); 
			paint.setAntiAlias(true); 
			Point point = new Point(); 
			projection.toPixels(gp1, point); 
			// mode=1&#65306;start 
			if(mode==1) 
			{ 
				if(defaultColor==999) 
					paint.setColor(Color.BLUE); 
				else 
					paint.setColor(defaultColor); 
				RectF oval=new RectF(point.x - mRadius, point.y - mRadius, 
						point.x + mRadius, point.y + mRadius); 
				// start point 
				canvas.drawOval(oval, paint); 
			} 
			// mode=2&#65306;path 
			else if(mode==2) 
			{ 
				if(defaultColor==999) 
					paint.setColor(Color.RED); 
				else 
					paint.setColor(defaultColor); 
				Point point2 = new Point(); 
				projection.toPixels(gp2, point2); 
				paint.setStrokeWidth(5); 
				paint.setAlpha(120); 
				canvas.drawLine(point.x, point.y, point2.x,point2.y, paint); 
			} 
			/* mode=3&#65306;end */ 
			else if(mode==3) 
			{ 
				/* the last path */ 

				if(defaultColor==999) 
					paint.setColor(Color.GREEN); 
				else 
					paint.setColor(defaultColor); 
				Point point2 = new Point(); 
				projection.toPixels(gp2, point2); 
				paint.setStrokeWidth(5); 
				paint.setAlpha(120); 
				canvas.drawLine(point.x, point.y, point2.x,point2.y, paint); 
				RectF oval=new RectF(point2.x - mRadius,point2.y - mRadius, 
						point2.x + mRadius,point2.y + mRadius); 
				/* end point */ 
				paint.setAlpha(255); 
				canvas.drawOval(oval, paint); 
			} 
		} 
		return super.draw(canvas, mapView, shadow, when); 
	} 

}
